from datetime import datetime

from pydantic import BaseModel, Field

from app.schemas.enums import WeatherEnum


class CreateWeatherForecastRequestSchema(BaseModel):
    regionId: int = Field(
        description="Идентификатор региона, для которого делается прогноз"
    )
    dateTime: datetime = Field(
        description="Дата и время, на которые делается прогноз в формате ISO-8601"
    )
    temperature: float = Field(description="Прогнозируемая температура, °C")
    weatherCondition: WeatherEnum = Field(
        description="Прогнозируемое состояние погоды. Доступные значения: CLEAR, CLOUDY, RAIN, SNOW, FOG, STORM"
    )


class GetWeatherForecastResponseSchema(BaseModel):
    id: int = Field(description="Уникальный идентификатор созданного прогноза погоды")
    regionId: int = Field(
        description="Идентификатор региона, для которого был создан прогноз"
    )
    temperature: float = Field(description="Прогнозируемая температура, °C")
    weatherCondition: WeatherEnum = Field(description="Прогнозируемое состояние погоды")
    dateTime: datetime = Field(description="Дата и время прогноза в формате ISO-8601")


class EditWeatherForecastRequestSchema(BaseModel):
    temperature: float = Field(description="Новая прогнозируемая температура, °C")
    weatherCondition: WeatherEnum = Field(
        description="Новое прогнозируемое состояние погоды. Доступные значения: CLEAR, CLOUDY, RAIN, SNOW, FOG, STORM"
    )
    dateTime: datetime = Field(
        description="Новая дата и время прогноза в формате ISO-8601"
    )
